AWS CloudShellにおける月間使用量制限対策について
こんにちは、シマです。
皆さんはAWS CloudShell使っていますか?ちょっとしたAWS CLIを実行する時にはとても便利で、私はよく使っています。
そんなAWS CloudShellにもサービスクォータがあることはご存じですか?そもそもサービスクォータとは、AWSアカウント単位でデフォルトで設定されている制限値です。これは、過剰なリソース利用による過剰請求からの保護や、AWSが信頼性の高いサービスを提供するための処置として設定されているものです。また一部の制限値については引き上げをリクエストできますが、リクエストできない制限値も存在します。
今回は、AWS CloudShellとそのサービスクォータで発生する事象とその解決策についてご紹介します。
事象発生ケース
5人~10人くらいで多頻度にAWS CloudShellを利用していたら、急に次のメッセージが表示されて利用できなくなった。
Unable to start the environment. The accountID:xxxx is exceeding the monthly hours limit.
発生理由
冒頭でほぼ述べてしまっていますが、AWS CloudShell のサービスクォータにある「月間使用量」の上限に達してしまっていることが原因です。
解決策
上限緩和
公式ドキュメントに詳細な時間は明記されていませんが、引き上げのリクエストが可能な制限値なので、上限値の引き上げをリクエストしましょう。AWS管理コンソールの「AWS Service Quotas」から上限値の引き上げリクエストが出来れば楽なのですが、現時点(2023/05/16)でそれはできないようです。
そのため、サポート問い合わせによる上限緩和申請を行いましょう。
別リージョンを使う
恒久的な対策としては前述の上限緩和ですが、今すぐに使えないと困る!そんな方はこちらでご対応ください。
AWS CloudShellのサービスクォータにある「毎月の使用状況」は、リージョン毎の制限値です。そのため、別リージョンでAWS CloudShellを利用することで回避可能です。今、東京リージョンを利用されている場合、「じゃあ、とりあえず大阪リージョン」と考えがちですが、AWS CloudShellは現時点(2023/05/16)では大阪リージョンに対応していませんので、選択することはできません。
AWS管理コンソールで大阪リージョンに変更してから、AWS CloudShellを開くと一見利用できているように見えますが、英語のメッセージの通りに別リージョン(画面ではシドニー)で実行されています。プロジェクトのポリシーで海外リージョンが禁止されている場合はご注意ください。
[Actions▼]の右ボタンより全画面化するとシドニーリージョンになっていることがわかります。
AWS CloudShellでAWS CLIを利用していた場合は特に意識せずに環境変数によりAWS管理コンソールのリージョンと連動して実行できていました。
しかし、別リージョンのAWS CloudShellを利用して、AWS CLIを東京リージョン向けに実行したい場合はオプションの指定や環境変数の変更が必要です。
aws xxxx --region ap-northeast-1
export AWS_REGION=ap-northeast-1
さらに、環境変数の変更はシェルセッションが終了するタイミングで初期化されてしまいます。それを防ぐためには、シェルのスタートアップスクリプトで変数を設定する必要があります。
# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions complete -C '/usr/local/bin/aws_completer' aws export AWS_EXECUTION_ENV=CloudShell # add AWS_REGION export AWS_REGION=ap-northeast-1
設定後には再読み込みを忘れずに。
source .bashrc
最後に
AWS CloudShellにおける月間使用量制限対策についてご紹介しました。
忘れがちなサービスクォータですが、上限に達してしまったとき焦ってしまいますよね。
本記事がどなたかのお役に立てれば幸いです。